package learnjava.basic.other;

public class day3_29 {

    public static void main(String[] args) {

        /**
        //测试字符串
        String greeting = "Hello";
        String greeting1  = "Hello";
        System.out.println(greeting=="Hello"); //true
        System.out.println(greeting==greeting1); //true,可见相同的常量字符串在java内存地址是一样的
        //所以不允许修改字符串的位，因为这样可能导致指向这个字符串的所有变量都被修改
        System.out.println(greeting.substring(0,3)=="Hel");  //false
        //取新的子字符串是放新开辟的空间，因为返回值并不是常量
        **/

        //测试码点点
        //（codepoint）是指与一个编码表中的某个字符对应的代码值。
        String gt = "hi𝕆";
        int cpCount = gt.codePointCount(0,gt.length());
//        int length = gt.length();
//        System.out.println(length);
//        System.out.println(cpCount);
//
//        for(int i=0;i<length;i++) {
//            char charAt = gt.charAt(i);
//            System.out.println(charAt);
//            System.out.println(Integer.toHexString(charAt));
//        }
        for(int i=0;i<cpCount;i++) {
            int index = gt.offsetByCodePoints(0,i);
            int charAt = gt.codePointAt(index);
            System.out.println(charAt);
            System.out.println(Integer.toHexString(charAt));
        }

//        System.out.println(0xD800);
//        System.out.println(0x10FFFF);

//        int index = gt.offsetByCodePoints(0, 0);
//        int cp = gt.codePointAt(index);
//        System.out.println(cp);

//        String hello = "hi𝕆";
    }
}
